<?php

/**
 * @author Grover Campos
 * @version 1.0
 * @created 03-ago-2009 06:43:07 p.m.
 */
class Gtux_Model_Subformulario extends Gtux_Model_Estructura 
{
  /**
   * @var int
   */
	private $_id_formulario;
	/**
	 * @var int
	 */
	private $_id_subformulario;
	/**
	 * @var string
	 */
	private $_nombre;
	/**
	 * @var string
	 */
	private $_etiqueta;
	/**
	 * @var ArrayObject
	 */
	private $_campos;
	
	public function __construct(array $options = null, Zend_Db_Table_Row_Abstract $row = null) 
	{
	  $this->_campos = new ArrayObject();
	  parent::__construct($options, $row);
	}

	/**
	 * Devuelve el formulario
	 *
	 * @return Gtux_Model_Formulario
	 */
	public function getFormulario() 
	{
		if (null != $this->_id_formulario) 
		{
		  return new Gtux_Model_Formulario(array(
		    'id_formulario' => $this->_id_formulario
		  ));
		}
		return false;
	}
  
  /**
   * Devuelve el id del formulario
   *
   * @return int
   */
  public function getIdFormulario()
  {
    return $this->_id_formulario;
  }
  
  /**
   * Devuelve la etiqueta
   *
   * @return string
   */
  public function getEtiqueta()
  {
    return $this->_etiqueta;
  }

  /**
   * Devuelve el id del subformulario
   *
   * @return int
   */
  public function getIdSubformulario()
  {
    return $this->_id_subformulario;
  }

  /**
   * Devuelve el nombre
   *
   * @return string
   */
  public function getNombre()
  {
    return $this->_nombre;
  }
  
  /**
   * Devuelve el array de campos del subformulario
   *
   * @return ArrayObject
   */
  public function getCampos()
  {
    return $this->_campos;
  }
  
  /**
   * Devuelve un iterator
   *
   * @return ArrayIterator
   */
  public function getCamposIterator() 
  {
    return $this->_campos->getIterator();
  }
	
	/**
	 * Establece el formulario
	 *
	 * @param Gtux_Model_Formulario $formulario
   * @return Gtux_Model_Subformulario
	 */
	public function setFormulario(Gtux_Model_Formulario $formulario) 
	{
		$this->_id_formulario = $formulario->getIdFormulario();
		return $this;
	}

  /**
   * Establece el id del formulario
   * 
   * @param int $id_formulario
   * @return Gtux_Model_Subformulario
   */
  public function setIdFormulario($id_formulario)
  {
    if (Zend_Validate::is($id_formulario, 'Int')) 
    {
      $this->_id_formulario = $id_formulario;
    }
    return $this;
  }

	/**
	 * Establece la etiqueta
	 * 
	 * @param string $etiqueta
   * @return Gtux_Model_Subformulario
	 */
	public function setEtiqueta($etiqueta)
	{
		$this->_etiqueta = trim((string)$etiqueta);
    return $this;
	}

	/**
	 * Establece el id del subformulario
	 * 
	 * @param int $id_subformulario
   * @return Gtux_Model_Subformulario
	 */
	public function setIdSubformulario($id_subformulario)
	{
	  if (Zend_Validate::is($id_subformulario, 'Int'))
	  {
		  $this->_id_subformulario = $id_subformulario;
	  }
    return $this;
	}

	/**
	 * Establece el nombre
	 * 
	 * @param string $nombre
   * @return Gtux_Model_Subformulario
	 */
	public function setNombre($nombre)
	{
		$this->_nombre = trim((string)$nombre);
    return $this;
	}
	
  /**
   * @see Gtux_Model_Abstract::getGateway()
   *
   * @return Gtux_Model_Gateway_Abstract
   */
	public function getGateway()
	{
    if (null == $this->_gateway) 
    {
      $this->setGateway(new Gtux_Model_Gateway_Subformulario());
    }
    return $this->_gateway;
	}	

	/**
	 * Establece los campos del subformulario
	 * 
	 * @param ArrayObject $campos
   * @return Gtux_Model_Subformulario
	 */
	public function setCampos(ArrayObject $campos)
	{
		$this->_campos = $campos;
    return $this;
	}

	/**
	 * Establece el campo a la colección
	 * 
	 * @param Gtux_Model_Campo $campo
	 * @return Gtux_Model_Subformulario
	 */
	public function addCampo(Gtux_Model_Campo $campo)
	{
	  $this->_campos->append($campo);
    return $this;
	}

	public function __sleep() 
	{
	  return array(
	    '_id_formulario', '_id_subformulario', '_nombre', '_etiqueta', '_campos', '_created_at', '_user'
	  );
	}
}
?>